package com.edu.exam.enums;

import com.edu.exam.enums.core.BaseEnum;

/**
 * 会话事件类型枚举
 *
 * @author System
 * @version 1.0.0
 */
public enum SessionEventType implements BaseEnum {
    /** 登录事件 */
    LOGIN("LOGIN", "登录事件"),
    /** 登出事件 */
    LOGOUT("LOGOUT", "登出事件"),
    /** 答题事件 */
    ANSWER("ANSWER", "答题事件"),
    /** 提交事件 */
    SUBMIT("SUBMIT", "提交事件"),
    /** 保存事件 */
    SAVE("SAVE", "保存事件"),
    /** 切换题目事件 */
    SWITCH_QUESTION("SWITCH_QUESTION", "切换题目事件"),
    /** 暂停事件 */
    PAUSE("PAUSE", "暂停事件"),
    /** 继续事件 */
    RESUME("RESUME", "继续事件"),
    /** 异常事件 */
    EXCEPTION("EXCEPTION", "异常事件"),
    /** 警告事件 */
    WARNING("WARNING", "警告事件"),
    /** 系统事件 */
    SYSTEM("SYSTEM", "系统事件"),
    /** 用户事件 */
    USER("USER", "用户事件"),
    /** 网络事件 */
    NETWORK("NETWORK", "网络事件"),
    /** 设备事件 */
    DEVICE("DEVICE", "设备事件"),
    /** 安全事件 */
    SECURITY("SECURITY", "安全事件");
    
    private final String code;
    private final String description;
    
    SessionEventType(String code, String description) {
        this.code = code;
        this.description = description;
    }
    
    @Override
    public String getCode() {
        return code;
    }
    
    @Override
    public String getDescription() {
        return description;
    }
    
    public static SessionEventType fromCode(String code) {
        for (SessionEventType type : values()) {
            if (type.getCode().equals(code)) {
                return type;
            }
        }
        throw new IllegalArgumentException("Unknown code: " + code);
    }
    
    public static SessionEventType fromDescription(String description) {
        for (SessionEventType type : values()) {
            if (type.getDescription().equals(description)) {
                return type;
            }
        }
        throw new IllegalArgumentException("Unknown description: " + description);
    }
    
    @Override
    public String toString() {
        return description;
    }
}